#pragma once

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/glm.hpp>


class LvCamera
{
public:

	void setOrthographicProjection(float left, float right, float top, float bottom, float near, float far);

	void setPerspectiveProjection(float fovy, float aspect, float near, float far);

	void setviewDirection(const glm::vec3& position, const glm::vec3 direction,
		const glm::vec3& up = { 0.0, -1.0, 0.0 });

	void setviewTraget(const glm::vec3& position, const glm::vec3 target,
		const glm::vec3& up = { 0.0, -1.0, 0.0 });

	void setViewYXZ(const glm::vec3& position, const glm::vec3& rotation);

	const glm::mat4& getProjection() const
	{
		return projectionMatrix;
	}

	const glm::mat4& getView() const
	{
		return viewMatrix;
	}

private:
	glm::mat4 projectionMatrix{ 1.0f };
	glm::mat4 viewMatrix{ 1.0 };
};

